hhkb
Python

파이썬기초_01_가변 객체와 불변 객체

작성자 : Heehyeon Yoo|2025-12-14
# Python# Mutable# Immutable# 자료구조

1. 파이썬의 모든 것은 '객체'다

파이썬에서 변수는 값을 저장하는 상자가 아니라, 객체를 가리키는 이름표(Reference)일 뿐이다.
이 개념을 이해해야 파이썬의 메모리 동작을 이해할 수 있다.

a = [1, 2, 3] 
b = a          # b도 같은 [1, 2, 3] 객체를 가리킴
a.append(4)
print(b)       # [1, 2, 3, 4] -> b도 영향을 받음!

2. 가변 객체 (Mutable)

"생성된 후에 상태를 변경할 수 있는 객체"

  • 종류: list, dict, set, 사용자 정의 클래스 등
  • 특징:
    • 값이 바뀌어도 메모리 주소(id())는 변하지 않는다.
    • 함수의 기본 인자(Default Argument)로 사용할 때 주의해야 한다. (def foo(l=[]) 문제)

3. 불변 객체 (Immutable)

"생성된 후에 상태를 변경할 수 없는 객체"

  • 종류: int, float, str, tuple
  • 특징:
    • 값을 바꾸려 하면, 아예 새로운 객체를 만들어서 할당한다. (메모리 주소가 바뀜)
    • 딕셔너리의 키(Key)나 집합(Set)의 요소로 사용할 수 있다. (해시 가능)

4. is==의 차이

  • ==: 값(Value)이 같은지 비교.
  • is: 메모리 주소(Reference)가 같은지 비교. (동일 객체인지)
a = [1, 2, 3]
b = [1, 2, 3]

print(a == b) # True (내용물은 같음)
print(a is b) # False (서로 다른 주소에 생성된 별개의 리스트)